home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / 56ktools / a5611.tz / a5611 / examples / test-int.a56 < prev    next >
Text File  |  1992-08-11  |  2KB  |  109 lines

  1. ; Interrupt-driven version of test-dac.a56.
  2. ;
  3.     include    'ioequ.inc'
  4.  
  5.     org    p:$0000
  6.     jmp    <start
  7.  
  8.     org    p:$000C
  9. ssi    jsr    <ssi_int            ;go handle SSI interrupt
  10.  
  11. ; data areas
  12.  
  13.     org    x:$0
  14. i_left    dc    0                ;left channel in
  15. i_right    dc    0                ;right channel in
  16.  
  17.     org    p:$40
  18. start
  19.  
  20. ; assign mode
  21.  
  22.     movec    #$0300,sr            ;go to IPL 3
  23.  
  24. ; set up interrupts
  25.  
  26.     movep    #0<<13|3<<12|0<<10,x:m_ipr    ;put SSI at lev 3, others off
  27.  
  28. ; set system sample rate
  29.  
  30.     bclr    #6,x:<<m_pbd            ;32.55 kHz
  31.     bset    #5,x:<<m_pbd            ;
  32.     bclr    #4,x:<<m_pbd            ;
  33.  
  34. ; set up SSI
  35.  
  36.     movep    #2<<13|1<<8,x:m_cra        ;16-bit word, 2 time slots
  37.     movep    #0<<15|3<<12|1<<11|1<<9,x:m_crb    ;sync,network,enable
  38.  
  39.     movep    #0,x:m_pcddr            ;port C is SSI/SCI
  40.     movep    #$1FF,x:m_pcc            ;port C is SSI/SCI
  41.  
  42. ; enable interrupts and spin
  43.  
  44.     jsr    <init                ;initialize
  45.     movec    #0,sr                ;lower IPL
  46.     jmp    <*
  47.  
  48. init    jmp    <init_sine
  49.  
  50. ssi_int    jsr    <sine_int
  51.     rti
  52.  
  53. ; square wave
  54.  
  55. square
  56.     move    #>-.1,a
  57.  
  58. sq1
  59.     do    #200,sq0
  60.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  61.     movep    a,x:m_tx
  62.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  63.     movep    a,x:m_tx
  64. sq0     
  65.     neg    a
  66.     jmp    <sq1
  67.  
  68.  
  69. ; triangle wave
  70.  
  71. triangle
  72.     move    #>.010,x0
  73.     move    #>-.9,a
  74.  
  75. l0      
  76.     do    #90*2,l1
  77.     add    x0,a
  78.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  79.     movep    a,x:m_tx
  80.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  81.     movep    a,x:m_tx
  82. l1
  83.     move    x0,b
  84.     neg    b
  85.     move    b,x0
  86.     jmp    <l0
  87.  
  88.  
  89. ; sine wave
  90.  
  91. init_sine
  92.     move    #>.050,x0            ;oscillator freq
  93.     move    #>-.209,a            ;initial conditions
  94.     move    #>.2090,b            ;
  95.     rts
  96.  
  97. sine_int
  98.     mac    x0,y0,a
  99.     move    a,y0
  100.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  101.     movep    a,x:m_tx        
  102.     mac    -x0,y0,b
  103.     move    b,y0
  104.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  105.     movep    b,x:m_tx        
  106.     rts
  107.  
  108.     end
  109.